I have a script that compares an attribute between two modules. I have tried to modify this to have it compare an attribute in one module to a different attribute in the other module. I'm not sure it worked though, questioning the syntax of my modifications. Does anyone see what I might have done wrong? The first script below is the one I based off my modified one (the bottom script). I highlighted the changes. Oh, and don't mind the german, I translated the important bits.
Original Script
//DisplayDifferencesBetween2Modules
/********************************************************************************************************
REQUISIS DXL-Bibliothek
www.requisis.com/de/dxl-library.html
Die größte DXL-Bibliothek im deutschsprachigen Raum.
*********************************************************************************************************
(c) 2009-2012 REQUISIS GmbH
Geneststr. 5
D-10829 Berlin
www.requisis.com
*********************************************************************************************************
*Entdeckt von Zooby**************************************************************************************
*********************************************************************************************************
Beschreibung:
Dieses Layoutscript zeigt die Unterschiede zwischen 2 Modulen an. (Dazu in Doors eine neue Spalte als Layout DXL anlegen und das Script hineinkopieren - vorher anpassen)
description:
This script displays differences between two modules. (copy this script into a new column with the type layout script in DOORS)
*********************************************************************************************************
Nutzungsrechte:
Dieses Script darf frei für die tägliche Arbeit mit Doors verwendet werden.
Es darf beliebig in eigene Scripte integriert werden, sofern diese
nur für den Eigengebrauch bestimmt sind.
! Die Integration in andere Produkte oder Scripte, die nicht ausschließlich für den Eigengebrauch
! bestimmt sind, erfordert die schriftliche Zustimmung der REQUISIS GmbH.
! Die Verbreitung und Veröffentlichung dieses Scripts ist nur der REQUISIS GmbH vorbehalten.
This script may be used for daily work with Telelogic Doors. It is allowed to include this script
into own scripts if they are only intended to be used for own purposes.
! The integration into other products or scripts, which are not soley used for own purposes
! is not permitted.
*********************************************************************************************************
*/
// prevent dxl timeout dialog
pragma runLim, 0
Module mnew = current;
Module mold
/*********************************************************************************/
//Hier das Modul angeben mit dem Verglichen werden soll
//
//Here specify the module that should be compared against the module you are
//inserting the column into
/*********************************************************************************/
Module mbase_old = read("/Project/Folder/Module",false)
/*********************************************************************************/
//Hier das Attribute angeben mit dem die Objekte verglichen werden sollen
//
//specify the attributes with which the objects are compared
//For nearly all cases, Absolute Number is desired
/*********************************************************************************/
string vergleichsattribut = "Absolute Number"
/*********************************************************************************/
//Hier Attribute hinzufügen (mit Komma getrennt) die NICHT verglichen werden sollen
//oder weiter unten die Attribute angeben die verglichen werden sollen
//
//This adds attributes (separated by commas) NOT to be compared or
//specify below the attributes to be compared
/*********************************************************************************/
string ausnahmen="Last Modified On,Last Modified By,Created By,Created On,Created Thru"
/*********************************************************************************/
//Hier Attribute hinzufügen (mit Komma getrennt) die verglichen werden sollen
//oder weiter oben die Attribute angeben die nicht verglichen werden sollen
//
//This adds attributes (separated by commas) to be compared
// or specify the attributes not to be compared above
/*********************************************************************************/
string vergleiche=""
/*********************************************************************************/
//Hier Angeben ob mit einer Baseline verglichen werden soll [true/false]
//
//Specify whether this should be compared with a baseline [true / false]
/*********************************************************************************/
bool use_baseline = false
/*********************************************************************************/
//Hier die Werte für die VergleichsBaseline angeben (major,minor,suffix)
//
//Here put the values for the comparison baseline state (major, minor, suffix)
/*********************************************************************************/
int old_major=1
int old_minor=6
string old_suffix=""
if(!null mbase_old)
{
if(use_baseline)
{
Baseline bold = baseline(old_major,old_minor,old_suffix)
if(!null bold)mold = load(mbase_old ,bold,false)
}
else
{
mold = mbase_old
}
}
else
{
mold = null
display("Zielmodul nicht gefunden!");
}
Object oldo
string vergleichs_value
Skip ausnahmeliste = create()
Skip vergleicheliste = create()
//Hilfsfunktion zum Aufspalten von Strings
Skip explode(string input, string delimiter)
{
Buffer buf = create()
buf = input
Skip return_list = create
int i, pos1 = 0;
int strlen = length(buf);
int dellen = length(delimiter)
for(i=0;i<strlen;i++)
{
if(buf[i:i+dellen-1] "" == delimiter)
{
put(return_list,buf[pos1:i-1] "",buf[pos1:i-1] "")
pos1=i+dellen;
}
}
if(pos1<strlen)
{
put(return_list,buf[pos1:i-1] "",buf[pos1:strlen-1] "")
}
delete(buf)
return return_list
}
//Hilfsfunktion zum Suchen von Objekten anhand eines Attributes
Object getObject(string vergleichsattribut,string atrr_value,Module m)
{
Object o;
for o in m do
{
if(o.vergleichsattribut "" == atrr_value)
return o;
}
return null;
}
ausnahmeliste = explode(ausnahmen,",")
vergleicheliste = explode(vergleiche,",")
if(null mold)
{
display "Vergleichsmodul/Baseline nicht gefunden"
}
else
{
vergleichs_value=obj.(vergleichsattribut)
string Text=""
string temp=""
if(vergleichsattribut=="Absolute Number")
{
oldo=object(intOf(vergleichs_value))
}
else
{
oldo=getObject(vergleichsattribut,vergleichs_value,mold)
}
if (! null oldo)
{
AttrDef ad
for ad in mnew do
{
if ((ad.object)&&(!ad.dxl)&& !find(ausnahmeliste,ad.name,temp)&&(vergleiche==""||find(vergleicheliste,ad.name,temp)))
{
Buffer bufCur = create()
bufCur=obj.(ad.name)
Buffer bufOld = create()
// check if Attribute also exists in old baseline
AttrDef adold = find(mold, (ad.name))
if (adold!=null)
{
bufOld=oldo.(ad.name)
} else
{
bufOld=""
}
if (bufCur!=bufOld)
{
Buffer bufDiff = create()
diff(bufDiff, bufOld, bufCur, "\\b\\cf1\\strike ", "\\b\\cf3\\ul ")
Text = Text stringOf(bufDiff) " (" ad.name ")\n"
delete(bufDiff)
}
delete(bufOld)
delete(bufCur)
}
}
displayRichWithColor(Text)
}
else
{
displayRich "{\\b new object}"
}
}
delete ausnahmeliste
delete vergleicheliste
--------------------------------------------------------------------------------------------
----------------------
Modified Version
//DisplayDifferencesBetween2Modules
/********************************************************************************************************
REQUISIS DXL-Bibliothek
www.requisis.com/de/dxl-library.html
Die größte DXL-Bibliothek im deutschsprachigen Raum.
*********************************************************************************************************
(c) 2009-2012 REQUISIS GmbH
Geneststr. 5
D-10829 Berlin
www.requisis.com
*********************************************************************************************************
*Entdeckt von Zooby**************************************************************************************
*********************************************************************************************************
Beschreibung:
Dieses Layoutscript zeigt die Unterschiede zwischen 2 Modulen an. (Dazu in Doors eine neue Spalte als Layout DXL anlegen und das Script hineinkopieren - vorher anpassen)
description:
This script displays differences between two modules. (copy this script into a new column with the type layout script in DOORS)
*********************************************************************************************************
Nutzungsrechte:
Dieses Script darf frei für die tägliche Arbeit mit Doors verwendet werden.
Es darf beliebig in eigene Scripte integriert werden, sofern diese
nur für den Eigengebrauch bestimmt sind.
! Die Integration in andere Produkte oder Scripte, die nicht ausschließlich für den Eigengebrauch
! bestimmt sind, erfordert die schriftliche Zustimmung der REQUISIS GmbH.
! Die Verbreitung und Veröffentlichung dieses Scripts ist nur der REQUISIS GmbH vorbehalten.
This script may be used for daily work with Telelogic Doors. It is allowed to include this script
into own scripts if they are only intended to be used for own purposes.
! The integration into other products or scripts, which are not soley used for own purposes
! is not permitted.
*********************************************************************************************************
*/
// prevent dxl timeout dialog
pragma runLim, 0
Module mnew = current;
Module mold
/*********************************************************************************/
//Hier das Modul angeben mit dem Verglichen werden soll
//
//Here specify the module that should be compared against the module you are
//inserting the column into
/*********************************************************************************/
Module mbase_old = read("/Project/Folder/Module",false)
/*********************************************************************************/
//Hier das Attribute angeben mit dem die Objekte verglichen werden sollen
//
//specify the attributes with which the objects are compared
//For nearly all cases, Absolute Number is desired
/*********************************************************************************/
string vergleichsattribut = "Absolute Number"
/*********************************************************************************/
//Hier Attribute hinzufügen (mit Komma getrennt) die NICHT verglichen werden sollen
//oder weiter unten die Attribute angeben die verglichen werden sollen
//
//This adds attributes (separated by commas) NOT to be compared or
//specify below the attributes to be compared
/*********************************************************************************/
string ausnahmen=""
/*********************************************************************************/
//Hier Attribute hinzufügen (mit Komma getrennt) die verglichen werden sollen
//oder weiter oben die Attribute angeben die nicht verglichen werden sollen
//
//This adds attributes (separated by commas) to be compared
// or specify the attributes not to be compared above
/*********************************************************************************/
string vergleiche=""
string attributold=""
/*********************************************************************************/
//Hier Angeben ob mit einer Baseline verglichen werden soll [true/false]
//
//Specify whether this should be compared with a baseline [true / false]
/*********************************************************************************/
bool use_baseline = false
/*********************************************************************************/
//Hier die Werte für die VergleichsBaseline angeben (major,minor,suffix)
//
//Here put the values for the comparison baseline state (major, minor, suffix)
/*********************************************************************************/
int old_major=1
int old_minor=6
string old_suffix=""
if(!null mbase_old)
{
if(use_baseline)
{
Baseline bold = baseline(old_major,old_minor,old_suffix)
if(!null bold)mold = load(mbase_old ,bold,false)
}
else
{
mold = mbase_old
}
}
else
{
mold = null
display("Zielmodul nicht gefunden!");
}
Object oldo
string vergleichs_value
Skip ausnahmeliste = create()
Skip vergleicheliste = create()
//Hilfsfunktion zum Aufspalten von Strings
Skip explode(string input, string delimiter)
{
Buffer buf = create()
buf = input
Skip return_list = create
int i, pos1 = 0;
int strlen = length(buf);
int dellen = length(delimiter)
for(i=0;i<strlen;i++)
{
if(buf[i:i+dellen-1] "" == delimiter)
{
put(return_list,buf[pos1:i-1] "",buf[pos1:i-1] "")
pos1=i+dellen;
}
}
if(pos1<strlen)
{
put(return_list,buf[pos1:i-1] "",buf[pos1:strlen-1] "")
}
delete(buf)
return return_list
}
//Hilfsfunktion zum Suchen von Objekten anhand eines Attributes
Object getObject(string vergleichsattribut,string atrr_value,Module m)
{
Object o;
for o in m do
{
if(o.vergleichsattribut "" == atrr_value)
return o;
}
return null;
}
ausnahmeliste = explode(ausnahmen,",")
vergleicheliste = explode(vergleiche,",")
if(null mold)
{
display "Vergleichsmodul/Baseline nicht gefunden"
}
else
{
vergleichs_value=obj.(vergleichsattribut)
string Text=""
string temp=""
if(vergleichsattribut=="Absolute Number")
{
oldo=object(intOf(vergleichs_value))
}
else
{
oldo=getObject(vergleichsattribut,vergleichs_value,mold)
}
if (! null oldo)
{
AttrDef ad
for ad in mnew do
{
if ((ad.object)&&(!ad.dxl)&& !find(ausnahmeliste,ad.name,temp)&&(vergleiche==""||find(vergleicheliste,ad.name,temp)))
{
Buffer bufCur = create()
bufCur=obj.(ad.name)
Buffer bufOld = create()
// check if Attribute also exists in old baseline
AttrDef adold = find(mold, attributold"")
if (adold!=null)
{
bufOld=oldo.attributold""
} else
{
bufOld=""
}
if (bufCur!=bufOld)
{
Buffer bufDiff = create()
diff(bufDiff, bufOld, bufCur, "\\b\\cf1\\strike ", "\\b\\cf3\\ul ")
Text = Text stringOf(bufDiff) " \n"
delete(bufDiff)
}
delete(bufOld)
delete(bufCur)
}
}
displayRichWithColor(Text)
}
else
{
displayRich "{\\b new object}"
}
}
delete ausnahmeliste
delete vergleicheliste
Zooby - Fri Jul 26 15:29:42 EDT 2013 |